package com.syl.upimg.utils;

import org.apache.commons.lang3.RegExUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式工具类
 *
 * @author syl
 * @create 2018-09-14 10:48
 **/
public class RegexUtils extends RegExUtils {

    /**
     * 使用正则表达测试某字符串
     * @param text 文本
     * @param regex 正则
     * @return
     */
    public static boolean test(CharSequence text, String regex){
        return getMatcher(text, regex).matches();
    }

    /**
     * 使用正则表达从字符串中提取字符 提取不到时为空
     * @param text
     * @param regex
     * @return
     */
    public static String extract(CharSequence text, String regex){
        return extract(text, regex, null);
    }

    /**
     * 使用正则表达从字符串中提取字符
     * @param text 文本
     * @param regex 正则
     * @param defaultValue 未提取到的默认值
     * @return
     */
    public static String extract(CharSequence text, String regex, String defaultValue){
        Matcher matcher = getMatcher(text, regex);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()){
            sb.append(matcher.group());
        }
        return sb.length() == 0 ? defaultValue : sb.toString();
    }

    static Matcher getMatcher(CharSequence text, String regex) {
        Pattern pattern = Pattern.compile(regex);
        return pattern.matcher(text);
    }

}
